/*
括号匹配的头文件
*/

#ifndef _SATCK_H
#include <stdbool.h>
#define MAX_LEN 20

typedef struct stack_node{
    int capacity;       // 存放数组容量
    char *data;      // 存放数据.
    int top;        // top指针,栈为空时top=-1;

}Stack_node;

//  判断输入字符串中的括号是否匹配，匹配：true  不匹配:false
bool parentheses_match(char *str, int len);

// 初始化栈
void init(Stack_node *pstack);

// 得到栈的大小
int get_size(Stack_node *pstack);

// 出栈  并返回
char pop(Stack_node *pstack);

// 入栈     成功返回1       失败返回0
int push(Stack_node *pstack, char element);

// 检测栈是否为空
bool is_empty(Stack_node *pstack);

// 清空栈
void clear(Stack_node *pstack);

// 判断站内数组是否需要扩容     扩容：剩余空间小于5
bool need_expand(Stack_node *pstack);

// 扩容
void expand(Stack_node *pstack);

// 删除字符串中的所有空格
void delete_space1(char *str, int len);

// 判断输入的是哪种括号     1:）   2:]  3:}     其他：0
int judge(char ch);

// 判断该字符是否需要压栈   压栈：) ] }
bool need_push(char ch);

// 判断是否是匹配的括号
bool fun1(char ch1, char ch2);

#endif